package com.partsoft.dits.log;

import java.util.Date;
import java.util.List;

import com.partsoft.dits.EdgeDescriptor;

public interface LogResolver {
	
	boolean isImplemented();
	
	int getLogCount();
	List<LogEntity> getLogs();
	List<LogEntity> getLogs(int from, int count);

	int getLogCount(String queryString);
	List<LogEntity> getLogs(String queryString); 
	List<LogEntity> getLogs(String queryString, int from, int count);

	int getLogCount(LogLevel logLevel);
	List<LogEntity> getLogs(LogLevel logLevel);
	List<LogEntity> getLogs(LogLevel logLevel, int from, int count);
	
	int getLogCount(LogLevel logLevel, String queryString);
	List<LogEntity> getLogs(LogLevel logLevel, String queryString);
	List<LogEntity> getLogs(LogLevel logLevel, String queryString, int from, int count);
	
	int getLogCount(LogType logType, LogLevel logLevel, String queryString);
	List<LogEntity> getLogs(LogType logType, LogLevel logLevel, String queryString);

	int getLogCount(EdgeDescriptor descriptor);
	List<LogEntity> getLogs(EdgeDescriptor descriptor);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, int from, int count);
	
	int getLogCount(EdgeDescriptor descriptor, LogLevel logLevel);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogLevel logLevel);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogLevel logLevel, int from, int count);
	
	int getLogCount(EdgeDescriptor descriptor, String queryString);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, String queryString);
	
	int getLogCount(EdgeDescriptor descriptor, LogType logType);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogType logType);
	
	int getLogCount(EdgeDescriptor descriptor, LogType logType, LogLevel logLevel, String queryString);
	int getLogCount(EdgeDescriptor descriptor, LogType logType, LogLevel logLevel, String queryString, Date beginDay, Date endDay);
	int getLogCount(String dclsName, String did, LogType logType, LogLevel logLevel, String queryString, Date beginDay, Date endDay);
	
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogType logType, LogLevel logLevel, String queryString);
	
	List<LogEntity> getLogs(EdgeDescriptor descriptor, String queryString, int from, int count);
	
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogType logLevel, int from, int count);
	
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogType logType, LogLevel logLevel, String queryString, int from, int count);
	List<LogEntity> getLogs(EdgeDescriptor descriptor, LogType logType, LogLevel logLevel, String queryString, Date beginDay, Date endDay, int from, int count);
	List<LogEntity> getLogs(String dclsName, String did, LogType logType, LogLevel logLevel, String queryString, Date beginDay, Date endDay, int from, int count);
	
}
